package main

import (
	"encoding/json"
	"fmt"
	"strings"
)

// xiaorui.cc

type Nodes4 struct {
	Order int `json:"order"`
	Attribute  string `json:"attribute"`
	DirName string `json:"dir_name"`
	BookFileId  string `json:"book_file_id"`
	Children []Nodes4 `json:"children"`
}


func  main() {


	fmt.Println("====================================================")

	//定义 一个 可以包含任意 数据类型的 切片
	allNodes := make([]Nodes4,0)
	var  strSplits []string=strings.Split("第1.1层文件名称", ",")
	//var  strSplits []string=strings.Split("第1.1层文件名称,第1.2层文件名称,第1.3层文件名称", ",")
	//切片的容量
	var  length int =len(strSplits)
	var father Nodes4
	//先产生 所有节点
	for k1,v1 :=range strSplits{
		father.Order =k1
		father.Attribute = "folder"
		father.DirName =v1
		allNodes=append(allNodes, father)
		if k1 ==length-1{
			var f1 Nodes4
			f1.Order=length
			f1.Attribute="file"
			f1.BookFileId="dddddddddfsawfrwerfwe"
			allNodes=append(allNodes, f1)
		}

	}
	fmt.Println("========所有单独节点========",allNodes)


	//  挂载节点的 处理 方法
	var allNodesLenth int =len(allNodes)
	var j int
	for i := allNodesLenth-1; i >= 0; i-- {
	//	fmt.Println(allNodes[i])
		if i==0{
			break
		}
		var childrens []Nodes4
		childrens = append(childrens,allNodes[i] )
		j=i-1
		allNodes[j].Children = childrens
	}

	fmt.Println("===========================")
	fmt.Println(allNodes[0])

	// map转 json
	result2, err2 := json.Marshal(allNodes[0])
	if err2 != nil {
		return
	}
	fmt.Println("result2 = ", string(result2))

}